Chapitre 5 Les opérations sur données attributaires

Dans ce chapitre, nous allons utiliser les packages suivants :

library(sf)
library(tidyverse)
library(mapview)

Nous utiliserons les contours des territoires de la France métropolitaine issus de Admin Express.

load("data/territoires.RData")

Prenons la table des départements, cette table est un spatial dataframe.

class(departements_geo)
[1] "sf"         "data.frame"

On peut utiliser mapview() pour voir ce jeux de données.

mapview(departements_geo, zcol = "NOM_DEP", legend = F)

Comme évoqué dans la partie 1, on peut tout à fait appliquer sur un spatial dataframe les verbes du tidyverse comme sur un dataframe, notamment utiliser les verbes de dplyr.

Nous pouvons à partir de cette table filtrer les départements d’une certaine région.

departements_geo %>%
  filter(INSEE_REG == 52)
# A tibble: 5 x 6
  ID      NOM_DEP  INSEE_DEP INSEE_REG AREA                        geometry
  <fct>   <fct>    <fct>     <fct>     <S3: >            <MULTIPOLYGON [m]>
1 DEP000… LOIRE-A… 44        52        69967… (((276339 6716135, 276289 67…
2 DEP000… MAINE-E… 49        52        71605… (((419761 6744627, 419761 67…
3 DEP000… MAYENNE  53        52        52078… (((398109 6788330, 398104 67…
4 DEP000… SARTHE   72        52        62382… (((463283 6791785, 463279 67…
5 DEP000… VENDEE   85        52        67603… (((293744 6673579, 293709 66…

Nous pouvons ne sélectionner que quelques variables

departements_geo %>%
  select(INSEE_DEP) %>%
  glimpse()
Observations: 96
Variables: 2
$ INSEE_DEP <fct> 01, 2B, 02, 2A, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12…
$ geometry  <MULTIPOLYGON [m]> MULTIPOLYGON (((839096 6563..., MULTIPOLY…

A noter que par défaut, un spatial dataframe gardera toujours la géométrie.

Nous pouvons aggréger nos données.

regions <- departements_geo %>%
  group_by(INSEE_REG) %>%
  summarise(AREA = sum(AREA))

glimpse(regions)
Observations: 13
Variables: 3
$ INSEE_REG <fct> 11, 24, 27, 28, 32, 44, 52, 53, 75, 76, 84, 93, 94
$ AREA      <S3: units> 12064378723 [m^2], 39470054055 [m^2], 4798026094…
$ geometry  <GEOMETRY [m]> POLYGON ((670084 6886723, 6..., POLYGON ((690…

On voit que summarise permet non seulement d’aggréger nos données attributaires, mais également les géométries.

Cette opération permet donc de retrouver directement notre carte des régions métropolitaines.

mapview(regions, zcol = "INSEE_REG", legend = F)

On enfin effectuer des jointures attributaines sur nos données en utilisant les verbes à deux dataframe de dplyr.

Par exemple on va pouvoir récupérer, dans la table regions_geo de notre RData, les libellées de nos régions.

regions <- regions %>%
  left_join(regions_geo %>%
    st_drop_geometry(),
  by = c("INSEE_REG")
  )

Nous pouvons alors utiliser ce nouvelle attibu pour nos cartes.

mapview(regions, zcol = "NOM_REG", legend = F)

Attention, quand vous réalisez une jointure entre deux tables de données :

X %>% ZZ_join(Y)

La composante spatiale n’est conservée que pour la première table X.